package edu.uoc.tdp.client.gestors;

import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.Date;
import java.util.Vector;

import javax.swing.JComboBox;

import edu.uoc.tdp.client.EnumRol;
import edu.uoc.tdp.client.comu.Util;
import edu.uoc.tdp.comu.beans.CentreDocent;
import edu.uoc.tdp.comu.beans.Event;
import edu.uoc.tdp.comu.beans.Pais;
import edu.uoc.tdp.comu.beans.Rol;
import edu.uoc.tdp.comu.beans.TipusEvent;
import edu.uoc.tdp.comu.beans.Universitat;

public class GestorEvent extends Event{
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 3124557548650873924L;
	private ArrayList<Integer> requisitsList; 
	private ArrayList<EnumRol> rolList;
	private CentreDocent centre;
	
	public GestorEvent(){
		super();
	};
	
	public GestorEvent(int id_event, int id_tipusevent, int id_centre, String nom, String descripcio, Date dataIniEvent, Date dataFiEvent, 
			Date dataIniInscripcio, Date datafiInscripcio, int capacitatMax, Double preu, boolean actiu,
			Double percentMinNoModif, boolean esborrat, ArrayList<Integer> requisitList, ArrayList<EnumRol> rolList, CentreDocent centre){
		super(id_event, id_tipusevent,  id_centre, nom, descripcio, dataIniEvent, dataFiEvent, 
				 dataIniInscripcio,  datafiInscripcio,  capacitatMax, preu, actiu,
				 percentMinNoModif,  esborrat);
		this.requisitsList = requisitList;
		this.rolList = rolList;
		this.setCentre(centre);
	}
	
	public ArrayList<Integer> getRequisitsList() {
		return requisitsList;
	}
	
	public void setRequisitsList(ArrayList<Integer> requisitsList) {
		this.requisitsList = requisitsList;
	}
	
	public ArrayList<EnumRol> getRolList() {
		return rolList;
	}
	
	public void setRolList(ArrayList<EnumRol> rolList) {
		this.rolList = rolList;
	}

	public void setCentre(CentreDocent centre) {
		this.centre = centre;
	}

	public CentreDocent getCentre() {
		return centre;
	}

	
	public static void CarregaTipusEvent (JComboBox comboTipusEvent, Vector<TipusEvent> vectorTipusEvent) {
		comboTipusEvent.removeAllItems();
		try {
			ArrayList<TipusEvent> llista =  GestorRMI.rmi.GetTipusEvent();
			for(TipusEvent te : llista){
				if(te != null) {
					vectorTipusEvent.add(te);
					String nom = te.getNom();
					comboTipusEvent.addItem(nom);
				}
			}
		}
		catch(RemoteException ex) {
			Util.MissatgeError(Util.GetEtiqueta("ErrorConnexio"));
		}
		catch(Exception ex) {
			Util.MissatgeError(Util.GetEtiqueta("Manteniment.Error.CarregaTipus"));
		}		
	}
	
	public static void CarregaUniversitats (JComboBox comboUniversitat, Vector<Universitat> vectorUniversitat) {
		comboUniversitat.removeAllItems();
		try {
			ArrayList<Universitat> llista =  GestorRMI.rmi.getUniversitats();
			for(Universitat u : llista){
				if(u != null) {
					vectorUniversitat.add(u);
					String nom = u.getNom();
					comboUniversitat.addItem(nom);
				}
			}
		}
		catch(RemoteException ex) {
			Util.MissatgeError(Util.GetEtiqueta("ErrorConnexio"));
		}
		catch(Exception ex) {
			Util.MissatgeError(Util.GetEtiqueta("Manteniment.Error.CargaUniversitats"));
		}		
	}
	
	public static void CarregaCentres(int idUniversitat, JComboBox comboCentres, Vector<CentreDocent> vectorCentres){
		comboCentres.removeAllItems();
		try {
			ArrayList<CentreDocent> llista = GestorRMI.rmi.getCentresDocents(idUniversitat);
			for(CentreDocent c : llista) {
				vectorCentres.add(c);
				String nom = c.getNom();
				comboCentres.addItem(nom);
			}
			llista = null; 
		}
		catch(RemoteException ex) {
			Util.MissatgeError(Util.GetEtiqueta("ErrorConnexio"));
		}
		catch(Exception ex) {
			Util.MissatgeError(Util.GetEtiqueta("Manteniment.Error.CargaCentresDocents"));
		}
	}
}
